function MyArray(capacity) {
    this._array = new Array(capacity);
    this._size = 0;
}

/**
 * 数组插入元素
 * @param index  插入的位置
 * @param element  插入的元素
 */
MyArray.prototype.insert = function (index, element) {
    // 判断访问下标是否超出范围
    if(index < 0 || index > this._size){
        throw new Error('超出数组实际元素范围！');
    }
    // 如果实际元素达到数组容量上线，数组扩容
    if(this._size >= this._array.length){
        this.resize();
    }
    // 从右向左循环，逐个元素向右挪一位。
    for(var i = this._size - 1; i >= index; i--){
        this._array[i + 1] = this._array[i];
    }
    // 腾出的位置放入新元素
    this._array[index] = element;
    this._size++;
}

/**
 * 数组扩容
 */
MyArray.prototype.resize = function(){
    var arrayNew = new Array(this._array.length * 2);
    // 从旧数组拷贝到新数组
    for(var i = 0; i < this._array.length; i++) {
        arrayNew[i] = this._array[i];
    }
    this._array = arrayNew;
}

/**
 * 数组删除元素
 * @param index  删除的位置
 */
MyArray.prototype.delete = function(index) {
    // 判断访问下标是否超出范围
    if(index < 0 || index >= this._size){
        throw new Error('超出数组实际元素范围！');
    }
    var deletedElement = this._array[index];
    // 从左向右循环，逐个元素向左挪一位。
    for(var i = index; i < this._size-1; i++){
        this._array[i] = this._array[i + 1];
    }
    this._size--;
    return deletedElement;
}

/**
 * 输出数组
 */
MyArray.prototype.output = function(){
    for(var i = 0; i < this._size; i++){
        console.log(this._array[i]);
    }
}

var myArray = new MyArray(4);
myArray.insert(0,3);
myArray.insert(1,7);
myArray.insert(2,9);
myArray.insert(3,5);
myArray.insert(1,6);
myArray.insert(5,8);
myArray.delete(3);
myArray.output();